home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 July: Mac OS SDK / Dev.CD Jul 97 SDK1.toast / Development Kits (Disc 1) / Communications Toolbox / CommToolbox 1.1 / Interfaces / CIncludes / FileTransfers.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-11-21  |  5.9 KB  |  204 lines  |  [TEXT/MPS ]

  1. /************************************************************
  2.     FileTransfers.h
  3.     C Interface to the Macintosh Libraries
  4.  
  5.         Copyright Apple Computer, Inc. 1988-1991
  6.         All rights reserved
  7. ************************************************************/
  8.  
  9.  
  10. #ifndef __FILETRANSFERS__
  11. #define __FILETRANSFERS__
  12.  
  13. #ifndef __PACKAGES__
  14. #include <Packages.h>
  15. #endif
  16.  
  17. #ifndef __CTBUTILITIES__
  18. #include <CTBUtilities.h>
  19. #endif
  20.  
  21. #ifndef __CONNECTIONS__
  22. #include <Connections.h>
  23. #endif
  24.  
  25. #ifndef __FILES__
  26. #include <Files.h>
  27. #endif
  28.  
  29.  
  30. enum {
  31.  
  32.  
  33. /* current file transfer manager version    */
  34.  curFTVersion = 2,
  35.  
  36. /* FTErr    */
  37.  ftGenericError = -1,
  38.  ftNoErr = 0,
  39.  ftRejected = 1,
  40.  ftFailed = 2,
  41.  ftTimeOut = 3,
  42.  ftTooManyRetry = 4,
  43.  ftNotEnoughDSpace = 5,
  44.  ftRemoteCancel = 6,
  45.  ftWrongFormat = 7,
  46.  ftNoTools = 8,
  47.  ftUserCancel = 9,
  48.  ftNotSupported = 10
  49. };
  50.  
  51. typedef    OSErr FTErr;
  52.  
  53. enum {ftIsFTMode = 1 << 0,ftNoMenus = 1 << 1,ftQuiet = 1 << 2,ftConfigChanged = 1 << 4,
  54.     ftSucc = 1 << 7};
  55. typedef unsigned long FTFlags;
  56.  
  57. enum {ftSameCircuit = 1 << 0,ftSendDisable = 1 << 1,ftReceiveDisable = 1 << 2,
  58.     ftTextOnly = 1 << 3,ftNoStdFile = 1 << 4,ftMultipleFileSend = 1 << 5};
  59. typedef unsigned short FTAttributes;
  60.  
  61. enum {ftReceiving,ftTransmitting};
  62. typedef unsigned short FTDirection;
  63.  
  64.  
  65. struct FTRecord {
  66.     short            procID;
  67.     FTFlags            flags;
  68.     FTErr            errCode;
  69.     long            refCon;
  70.     long            userData;
  71.     ProcPtr            defProc;
  72.       Ptr                config;
  73.       Ptr                oldConfig;
  74.     ProcPtr            environsProc;
  75.     long            reserved1;
  76.     long            reserved2;
  77.     Ptr                ftPrivate;
  78.      ProcPtr            sendProc;
  79.       ProcPtr            recvProc;
  80.     ProcPtr            writeProc;
  81.     ProcPtr            readProc;
  82.      WindowPtr        owner;
  83.     FTDirection        direction;
  84.       SFReply            theReply;
  85.       long              writePtr;
  86.       long              readPtr;
  87.       char              *theBuf;
  88.     long            bufSize;
  89.     Str255            autoRec;
  90.     FTAttributes    attributes;
  91. };
  92.  
  93. typedef struct FTRecord FTRecord;
  94. typedef FTRecord  *FTPtr, **FTHandle;
  95.  
  96.  
  97. enum {
  98.  
  99.  
  100. /* FTReadProc messages */
  101.  ftReadOpenFile = 0,    /* count = forkFlags, buffer = pblock from PBGetFInfo */
  102.  ftReadDataFork = 1,
  103.  ftReadRsrcFork = 2,
  104.  ftReadAbort = 3,
  105.  ftReadComplete = 4,
  106.  ftReadSetFPos = 6,        /* count = forkFlags, buffer = pBlock same as PBSetFPos */
  107.  ftReadGetFPos = 7,        /* count = forkFlags, buffer = pBlock same as PBGetFPos */
  108.  
  109.  
  110. /* FTWriteProc messages */
  111.  ftWriteOpenFile = 0,    /* count = forkFlags, buffer = pblock from PBGetFInfo */
  112.  ftWriteDataFork = 1,
  113.  ftWriteRsrcFork = 2,
  114.  ftWriteAbort = 3,
  115.  ftWriteComplete = 4,
  116.  ftWriteFileInfo = 5,
  117.  ftWriteSetFPos = 6,    /* count = forkFlags, buffer = pBlock same as PBSetFPos */
  118.  ftWriteGetFPos = 7,    /* count = forkFlags, buffer = pBlock same as PBGetFPos */
  119.  
  120.  
  121. /*    fork flags */
  122.  ftOpenDataFork = 1,
  123.  ftOpenRsrcFork = 2
  124. };
  125.  
  126. /*    application routines type definitions */
  127. typedef pascal OSErr (*FileTransferReadProcPtr) (unsigned long *count, Ptr pData, long refCon, short fileMsg);
  128. typedef pascal OSErr (*FileTransferWriteProcPtr) (unsigned long *count, Ptr pData, long refCon, short fileMsg);
  129.  
  130. typedef pascal OSErr (*FileTransferSendProcPtr) (Ptr thePtr, long theSize, long refCon, CMChannel channel, CMFlags flag);
  131. typedef pascal OSErr (*FileTransferReceiveProcPtr) (Ptr thePtr, long theSize, long refCon, CMChannel channel, CMFlags flag);
  132.  
  133. typedef pascal OSErr (*FileTransferEnvironsProcPtr) (long refCon, ConnEnvironRec *theEnvirons);
  134.  
  135. typedef pascal void  (*FileTransferNotificationProcPtr) (FTHandle hFT, FSSpecPtr pFSSpec);
  136. typedef pascal void  (*FileTransferChooseIdleProcPtr) (void);
  137.  
  138. #ifdef __cplusplus
  139. extern "C" {
  140. #endif
  141. pascal FTErr     InitFT(void);
  142. pascal Handle     FTGetVersion(FTHandle hFT);
  143. pascal short     FTGetFTVersion(void);
  144.  
  145. pascal FTHandle FTNew(short procID,FTFlags flags,FileTransferSendProcPtr sendProc,
  146.  FileTransferReceiveProcPtr recvProc,FileTransferReadProcPtr readProc,FileTransferWriteProcPtr writeProc,
  147.  FileTransferEnvironsProcPtr environsProc,WindowPtr owner,long refCon,long userData);
  148.  
  149. pascal void     FTDispose(FTHandle hFT);
  150.  
  151. pascal FTErr     FTStart(FTHandle hFT,FTDirection direction,const SFReply *fileInfo);
  152. pascal FTErr     FTAbort(FTHandle hFT);
  153.  
  154. pascal FTErr    FTSend(FTHandle hFT,short numFiles,FSSpecArrayPtr pFSSpec,
  155.  FileTransferNotificationProcPtr notifyProc);
  156. pascal FTErr    FTReceive(FTHandle hFT,FSSpecPtr pFSSpec,FileTransferNotificationProcPtr notifyProc);
  157.                     
  158. pascal void     FTExec(FTHandle hFT);
  159.  
  160. pascal void     FTActivate(FTHandle hFT,Boolean activate);
  161. pascal void     FTResume(FTHandle hFT,Boolean resume);
  162. pascal Boolean     FTMenu(FTHandle hFT,short menuID,short item);
  163.  
  164. pascal short     FTChoose(FTHandle *hFT,Point where,FileTransferChooseIdleProcPtr idleProc);
  165. pascal void     FTEvent(FTHandle hFT,const EventRecord *theEvent);
  166.  
  167. pascal Boolean     FTValidate(FTHandle hFT);
  168. pascal void     FTDefault(Ptr *theConfig,short procID,Boolean allocate);
  169.  
  170. pascal Handle     FTSetupPreflight(short procID,long *magicCookie);
  171. pascal void     FTSetupSetup(short procID,const void *theConfig,short count,
  172.  DialogPtr theDialog,long *magicCookie);
  173. pascal Boolean     FTSetupFilter(short procID,const void *theConfig,short count,
  174.  DialogPtr theDialog,EventRecord *theEvent,short *theItem,long *magicCookie);
  175. pascal void        FTSetupItem(short procID,const void *theConfig,short count,
  176.  DialogPtr theDialog,short *theItem,long *magicCookie);
  177. pascal void     FTSetupXCleanup(short procID,const void *theConfig,short count,
  178.  DialogPtr theDialog,Boolean OKed,long *magicCookie);
  179.  
  180. pascal void     FTSetupPostflight(short procID);
  181.  
  182. pascal Ptr         FTGetConfig(FTHandle hFT);
  183. pascal short     FTSetConfig(FTHandle hFT,const void *thePtr);
  184.  
  185. pascal OSErr     FTIntlToEnglish(FTHandle hFT,const void *inputPtr,Ptr *outputPtr,
  186.     short language);
  187. pascal OSErr     FTEnglishToIntl(FTHandle hFT,const void *inputPtr,Ptr *outputPtr,
  188.     short language);
  189.  
  190. pascal void     FTGetToolName(short procID,Str255 name);
  191. pascal short      FTGetProcID(ConstStr255Param name);
  192.  
  193. pascal void     FTSetRefCon(FTHandle hFT,long refCon);
  194. pascal long     FTGetRefCon(FTHandle hFT);
  195.  
  196. pascal void     FTSetUserData(FTHandle hFT,long userData);
  197. pascal long     FTGetUserData(FTHandle hFT);
  198.  
  199. pascal void        FTGetErrorString(FTHandle hFT,short id,Str255 errMsg);
  200. #ifdef __cplusplus
  201. }
  202. #endif
  203.  
  204. #endif